Transaction processing is an important aspect of systems that provide data durability, such as databases or reliable message processing systems. In computer programming, a transaction typically means a sequence of information exchange and related work, such as database updating, that is treated as a unit for the purposes of satisfying a request and for ensuring system integrity. High transaction throughput and low average response times are desirable performance characteristics of systems using transaction processing.
Generally in transaction processing, a transaction is processed in its entirety before the transaction is considered complete. For example, in transaction processing in a database system, database changes over the course of a transaction are tracked. If a transaction fails to be processed in its entirety, any changes to the database are then undone. For example, when a database transaction completes successfully, the database changes are said to be “committed” and when a transaction does not complete, database changes are “rolled back.”
Transaction systems are typically required to provide transaction durability. Durability is the guarantee that once a user has been notified of the success of a particular transaction, the transaction actions, such as database changes, will persist. In a database system, modifications intended for the database are first written to a memory buffer and then applied to persistent storage. The process of persisting data, such as transaction data, from temporary storage, such as a memory buffer, to more permanent storage, such as a disk, is called a flush.